1. Field of the Invention
This invention relates to computer networking, and more particularly to the self-organization of groups of nodes on a network.
2. Description of the Related Art
Computer networks may be described as collections of two or more nodes that are interconnected through wired or wireless network interfaces so that each node can communicate, either directly or indirectly, with at least one other node on the network. A node may be any device that has the hardware and software necessary to connect to the network through wired or wireless network interfaces, and to communicate with other nodes on the network. A node may also be a software entity such as an application or service that resides on a device that is configured to connect to the network. An example of such a software entity is a server. Note that a device may host one or more software entities that each may be configured as a node on the network. For example, one device may host two servers that are each distinct nodes on the network.
Collections of two or more nodes may be grouped together for many applications in computer networks. Examples of such applications include, but are not limited to, application server clusters and grid computing systems. In many such applications, one, or sometimes more, of the nodes may be designated to serve as a central point for management of the nodes in the group. A node designated to serve as a central point of management may be referred to herein as a master node. The nodes in the group that are not master nodes may be referred to herein as “slave” nodes. Conventionally, a system administrator has to manually configure the collection of nodes to function together as a group. The system administrator also manually designates and/or configures one or more of the nodes to be the master node(s) for the group. If, during operation, the master node goes down or becomes unavailable or unable to fulfill its function as master node for the group for any reason, the group may be unable to perform its function unless and until the system administrator gets the master node back online or manually configures and designates another node to take over the role of master node.
Peer-to-Peer Networking
The term peer-to-peer networking or computing (often referred to as P2P) may be applied to a wide range of technologies that greatly increase the utilization of information, bandwidth, and computing resources in the Internet. Frequently, these P2P technologies adopt a network-based computing style that neither excludes nor inherently depends on centralized control points. In addition to improving the performance of information discovery, content delivery, and information processing, such a style also can enhance the overall reliability and fault-tolerance of computing systems.
FIGS. 1A and 1B are examples illustrating the peer-to-peer model. FIG. 1A shows two peer devices 104A and 104B that are currently connected. Either of the two peer devices 104 may serve as a client of or a server to the other device. FIG. 1B shows several peer devices 104 connected over the network 106 in a peer group. In the peer group, any of the peer devices 104 may serve as a client of or a server to any of the other devices.
JXTA
Sun Microsystems' JXTA™ is an exemplary peer-to-peer platform. Peer-to-peer platforms such as JXTA may provide protocols for building networking applications that thrive in dynamic environments. JXTA technology is a set of open protocols that allow any connected device on the network ranging from cell phones and wireless PDAs to PCs and servers to communicate and collaborate in a peer-to-peer (P2P) manner. JXTA peers create a virtual network where any peer can interact with other peers and resources directly even when some of the peers and resources are behind firewalls and NATs or are on different network transports. In JXTA, every peer is identified by an ID, unique over time and space. Peer groups are user-defined collections of entities (peers) that may share a common interest. Peer groups are also identified by unique IDs. Peers may belong to multiple peer groups, discover other entities and peer resources (e.g. peers, peer groups, services, content, etc.) dynamically, and publish themselves and resources so that other peers can discover them.